The Symantec C/C++ for MPW 6.0.1 Update corrects problems with the 6.0 version of the
following parts of the Symantec C/C++ for MPW system: SCpp, SC, SCpre, SCUnmangle,
and the IOStreams library. It also contains several new include files.
This document has the following sections:
• UPDATING YOUR SYSTEM tells you how to run the various patch
programs to update your Symantec C++ for MPW tools, and how to
update your libraries.
• WHAT THIS UPDATE FIXES describes the changes that were made for this update.
• WORK-AROUNDS describes how to avoid some problems developers
have reported to us in using Symantec C++ for Macintosh.
UPDATING YOUR SYSTEM
=====================
Updating your Symantec C++ for MPW 6.0.1 installation is a two step process: you need to patch the tools, and you need to install the new libraries and header files.
Patching Things Up
-----------------
This update contains four small applications in the ‘Patches’ folder that
will transform your tools into the new versions. Updating is easy:
• Double-click on the patch application (i.e. “SCpp 6.0.1 Patch”).
• Read the messages in the dialog that comes up; they may contain
important information. Click the ‘Patch’ button.
• Select the tool asked for using the standard file dialog box.
•••••••••
IMPORTANT
•••••••••
The patch is done in place! This means that the patcher will overwrite
the file you’re updating. When it is done, you will get a confirmation that
the patch was successful.
• Repeat these steps for the other patches in the ‘Patches’ folder:
SC 6.0.1 Patch
SCpre 6.0.1 Patch
SCUnmangle 6.0.1 Patch
Updating the Headers and Libraries
-------------------------------
The new headers and libraries are contained in a Compact Pro self extracting archive. Installing them is easy:
• Double-click on the file “SCpp 6.0.1 Update.sea”.
• When it asks you to “Select the destination folder”, select a convenient folder
on your hard drive.
• The archive will begin to extract its files, displaying a progress dialog as it goes.
• Launch MPW and execute the “InstallUpdate” script in the folder “Symantec C/C++
Update”. You should select this folder in the directory dialog box that appears when
the script runs.
• Several files that were part of the 6.0 release are now obsolete: you are given the
option of having the script delete these files for you. Click the OK button if you
want them to be removed.
• Three files in the MacApp toolset were modified for this release. If you want to
update these, click the OK button in the dialog and they will be copied into their
correct location.
• A series of Duplicate command-lines will be generated by the script to copy the
updated files to their respective locations in your MPW folder. Select these lines
by dragging over them and press the Enter key. The files will be copied.
• The update is now complete: you may delete the “Symantec C/C++ Update” folder.
WHAT THIS UPDATE FIXES
=======================
•••••••••
IMPORTANT
•••••••••
All precompiled headers must be re-precompiled to use the new translator.
In addition, object layout has changed, so be sure to recompile all C++ object
code from scratch.
Overall, these areas of the compiler were addressed:
- error reporting and handling
- template generation
- multiple inheritance
• Calling ldiv() no longer corrupts the stack.
• Aggregate results for C++ routines that have more than one argument
now work correctly.
• C++ comments that contain single or double quotes following
preprocessor directives with “ANSI conformance” on now work correctly.
• Template functions may be declared static or inline.
• Error handling when encountering erroneous template declarations has been
improved.
• The built-in name “comp” is not recognized when strict ANSI conformance
is on.
• Conditional expressions with enum (or smaller-than-int) arguments are
not promoted to int.
• asm() is now allowed when ANSI relaxed is used.
• Many bugs with multiple inheritance were fixed, particularly those involving
virtual base and non-virtual base hierarchies.
• A bug with operator overloading and forward declared types was fixed.
• Error handling is more robust.
• An erroneous “code segment too large” error in switch statement code generation
was fixed.
• A code generation bug with conditional operators was fixed.
• C calling conventions for functions that return structs now work.
• A template bug with an incorrect “member functions cannot be static” error
was fixed.
• Member functions no longer hide base class functions of the same name for
PascalObject derived classes.
• Overloaded operator[]() now works correctly with respect to non-int
arguments.
• Error reporting for errors that occur during template expansion was improved.
• Improved multiple inheritance code generation.
• The friend declaration of a function previously declared as static no longer
changes the function’s linkage.
• Bug in transcendental 68881 codegen fixed.
• Empty non-virtual destructors that are generated out of line no longer
produce incorrect code.
• Floating point struct member passed as argument to routine with pascal
calling conventions no longer produces incorrect code.
• The compiler now flags overloaded PascalObject member functions as errors.
• A code generation bug with pointer and bitwise & was fixed.
• Decrement operator applied to HandleObject class member no longer
modifies “this” pointer.
• Initializing an array of pointers to functions with fixed array bounds
no longer produces an internal error.
• Internal error when compiling an expression with a conditional operator
no longer occurs.
• The compiler now allows destructors to be called with C calling conventions